package com.itheima.springbootwebtlias.commons;

import com.itheima.springbootwebtlias.exception.BaseException;
import com.itheima.springbootwebtlias.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

//1.定义全局异常处理类
@Slf4j
@RestControllerAdvice   //  全局异常处理

public class GlobalExceptionHandler {
    //2.添加异常处理方法，处理整个项目所有的系统异常方法
    @ExceptionHandler(Exception.class)
    public Result defaultExceptionHandler(Exception e) {
        e.printStackTrace();//  建议打印异常信息到控制台，方便后续排查问题
        //3.异常处理逻辑
        //3.1记录异常信息
        log.error("服务器异常：{}", e.getMessage());
        //3.2通知运维人员+开发人员紧急维修
        log.info("邮件通知运维人员+开发人员紧急维修");
        //3.3返回错误信息给前端
        return Result.error("请检查您的本地网络是否正常！！请稍后再试！！");
    }

    //4.添加自定义异常处理方法,处理整个项目所有的业务异常方法
    @ExceptionHandler(BaseException.class)
    public Result defaultCommonHandler(BaseException e){
        //3.异常处理逻辑
        //3.1记录异常信息
        log.error("服务器异常：{}", e.getMessage());
        //3.2返回异常信息到前端，纠正用户行为
        return Result.error(e.getMessage());
    }

}
